/** 请求参数 */
export interface Result {
  /** 状态码 */
  code: number;
  /** 执行成功 */
  success: boolean;
  /** 错误信息 */
  msg: string;
  /** 附加数据 */
  extras?: object;
  /** 时间戳 */
  time: number;
}

/** 请求响应参数（包含data） */
export interface ResultData<T = any> extends Result {
  /** 数据 */
  data: T;
}

/** 请求分页模块 */
export interface ResPage<T> {
  /** 当前页集合 */
  items: T[];
  /** 页码 */
  pageIndex: number;
  /** 页容量 */
  pageSize: number;
  /** 总条数 */
  totalCount: number;
  /** 总页数 */
  totalPages: number;
  /** 是否有上一页 */
  hasPrevPages: boolean;
  /** 是否有下一页 */
  hasNextPages: boolean;
}

/** 请求分页模块 */
export interface ReqPage {
  /** 当前页码 */
  pageIndex: number;
  /** 分页容量 */
  pageSize: number;
  /** 是否正序 */
  isAscending: boolean;
  /** 排序属性 */
  orderField: string;
}

/** 上传模块 */
export namespace Upload {
  /** 文件上传返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 文件名称 */
    name: string;
    /** 扩展名 */
    extend: string;
    /** 文件大小(K) */
    size: number;
    /** 预览地址 */
    url: string;
  }
}

/** 选项模块 */
export namespace Option {
  /** 下拉框选项 */
  export interface SelectOption {
    label: string;
    value: string | number;
  }
  /** 级联选择器选项 */
  export interface CascadeOption extends SelectOption {
    children?: CascadeOption[];
  }
}

/** 登录模块 */
export namespace Login {
  /** 验证码返回结果 */
  export interface VerificationCodeResult {
    /** 验证码Id */
    id: string;
    /** Base64格式图片 */
    base64: string;
  }
  /** 登录成功返回结果 */
  export interface LoginResult {
    /** token */
    accessToken: string;
    /** 刷新token */
    refreshToken: string;
  }
  /** 登录用户信息 */
  export interface UserInfoResult {
    /** 用户Id */
    userId: string;
    /** 昵称 */
    nickName: string;
    /** 联系电话 */
    phone: string;
    /** 头像 */
    avatar: string;
    /** 组织机构 */
    org: string;
    /** 角色列表 */
    roles: Array<string>;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
  /** 按钮权限返回结果 */
  export interface ResAuthButtonsResult {
    [key: string]: string[];
  }
  /** 登录请求 */
  export interface LoginForm {
    /** 用户名 */
    account: string;
    /** 密码 */
    passWord: string;
    /** 验证码 */
    code: string;
    /** 验证码Id */
    codeId: string;
  }
}

/** 系统站内信模块 */
export namespace SysMail {
  /** 站内信分页返回结果 */
  export interface PageResult {
    /** 主键 */
    id: string;
    /** 信件类型(0: 通知 1: 公告 2: 私信) */
    mailType: number;
    /** 信息标题 */
    title: string;
    /** 发送范围(0: 全部用户 1: 指定机构 2: 指定角色 3: 指定用户) */
    sendingRange: number;
    /** 是否发布 */
    isPublish: boolean;
    /** 发布时间 */
    publishTime?: string | undefined;
    /** 撤回时间 */
    cancelTime?: string | undefined;
    /** 创建人名称 */
    createUserName: string;
    /** 创建时间 */
    createTime: string;
  }
  /** 站内信返回结果 */
  export interface Result extends PageResult {
    /** 信息内容 */
    message: string;
    /** 接收信息的组织机构 */
    orgId?: string;
    /** 接收信息的角色 */
    roleIds?: string[];
    /** 接收信息的用户 */
    userIds?: string[];
  }
  /** 站内信简短返回结果 */
  export interface ShortResult {
    /** 主键 */
    id: string;
    /** 信件类型(0: 通知 1: 公告 2: 私信) */
    mailType: number;
    /** 信息标题 */
    title: string;
    /** 是否已读 */
    isRead: boolean;
    /** 创建时间 */
    createTime: string;
    /** 创建人名称 */
    createUserName: string;
  }
  /** 站内信编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 信件类型(0: 通知 1: 公告 2: 私信) */
    mailType: number;
    /** 信息标题 */
    title: string;
    /** 信息内容 */
    message: string;
    /** 发送范围(0: 全部用户 1: 指定机构 2: 指定角色 3: 指定用户) */
    sendingRange: number;
    /** 接收信息的组织机构 */
    orgId?: string;
    /** 接收信息的角色 */
    roleIds?: string[];
    /** 接收信息的用户 */
    userIds?: string[];
  }
  /** 站内信查询请求 */
  export interface PageParams extends ReqPage {
    /** 信件类型(0: 通知 1: 公告 2: 私信) */
    mailType?: number;
    /** 信息标题 */
    title?: string;
    /** 发送范围(0: 全部用户 1: 指定机构 2: 指定角色 3: 指定用户) */
    sendingRange?: number;
    /** 是否发布 */
    isPublish?: boolean;
    /** 创建人名称 */
    createUserName?: string;
  }
}

/** 系统菜单模块 */
export namespace SysMenu {
  /** 系统菜单返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 上级菜单 */
    pid: string;
    /** 标题 */
    title: string;
    /** 路由名称 */
    name: string;
    /** 路由地址 */
    path: string;
    /** 菜单图标 */
    icon: string;
    /** 重定向路由 */
    redirect: string;
    /** 视图文件路径 */
    component: string;
    /** 当前路由为详情页时需要高亮的菜单 */
    activeMenu: string;
    /** 路由外链时填写的访问地址 */
    link: string;
    /** 路由参数 */
    params: string;
    /** 路由拼接方式(0: url拼接 1: 路由参数拼接) */
    splicingMethod: number;
    /** 权重(排序) */
    sort: number;
    /** 菜单类型(0: 目录 1: 菜单 2: 按钮) */
    menuType: number;
    /** 是否隐藏(0:否 1:是) */
    isHide: boolean;
    /** 是否全屏(0:否 1:是) */
    isFull: boolean;
    /** 是否固定tab(0:否 1:是) */
    isAffix: boolean;
    /** 是否缓存(0:否 1:是) */
    isKeepAlive: boolean;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
    /** 子菜单 */
    children?: Result;
  }
  /** 系统菜单编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 上级菜单 */
    pid: string;
    /** 标题 */
    title: string;
    /** 路由名称 */
    name: string;
    /** 路由地址 */
    path: string;
    /** 菜单图标 */
    icon: string;
    /** 重定向路由 */
    redirect: string;
    /** 视图文件路径 */
    component: string;
    /** 当前路由为详情页时需要高亮的菜单 */
    activeMenu: string;
    /** 路由外链时填写的访问地址 */
    link: string;
    /** 路由参数 */
    params: string;
    /** 路由拼接方式(0: url拼接 1: 路由参数拼接) */
    splicingMethod: number;
    /** 权重(排序) */
    sort: number;
    /** 菜单类型(0: 目录 1: 菜单 2: 按钮) */
    menuType: number;
    /** 是否隐藏(0:否 1:是) */
    isHide: boolean;
    /** 是否全屏(0:否 1:是) */
    isFull: boolean;
    /** 是否固定tab(0:否 1:是) */
    isAffix: boolean;
    /** 是否缓存(0:否 1:是) */
    isKeepAlive: boolean;
  }
  /** 系统菜单查询请求 */
  export interface Params {
    /** 标题 */
    title?: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable?: boolean;
  }
}

/** 系统角色模块 */
export namespace SysRole {
  /** 系统角色返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 角色名称 */
    name: string;
    /** 角色编码 */
    code: string;
    /** 备注说明 */
    remarks: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 系统角色编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 角色名称 */
    name: string;
    /** 角色编码 */
    code: string;
    /** 备注说明 */
    remarks: string;
    /** 授权菜单集合 */
    menuIds: string[];
  }
  /** 系统角色资源编辑请求 */
  export interface ResourceForm {
    /** 主键 */
    id: string;
    /** 授权资源路由集合 */
    routes: string[];
  }
  /** 系统角色查询请求 */
  export interface PageParams extends ReqPage {
    /** 角色名称 */
    name: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable?: boolean;
  }
}

/** 组织机构模块 */
export namespace SysOrg {
  /** 组织机构返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 上级菜单 */
    pid: string;
    /** 机构编号 */
    number: string;
    /** 机构名称 */
    name: string;
    /** 备注说明 */
    remarks: string;
    /** 权重(排序) */
    sort: number;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
    /** 子组织机构 */
    children?: Result;
  }
  /** 组织机构编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 上级菜单 */
    pid: string;
    /** 机构编号 */
    number: string;
    /** 机构名称 */
    name: string;
    /** 备注说明 */
    remarks: string;
    /** 权重(排序) */
    sort: number;
  }
  /** 组织机构查询请求 */
  export interface Params {
    /** 机构名称 */
    name?: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable?: boolean;
  }
}

/** 系统参数模块 */
export namespace SysParam {
  /** 系统参数返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 参数名称 */
    name: string;
    /** 参数编码 */
    code: string;
    /** 参数数值 */
    value: string;
    /** 备注说明 */
    remarks: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 系统参数编辑请求 */
  export interface Form {
    /** 参数名称 */
    id: string;
    /** 参数编码 */
    name: string;
    /** 编码 */
    code: string;
    /** 参数数值 */
    value: string;
    /** 备注说明 */
    remarks: string;
  }
  /** 系统参数查询请求 */
  export interface PageParams extends ReqPage {
    /** 参数名称 */
    name: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable?: boolean;
  }
}

/** 系统用户模块 */
export namespace SysUser {
  /** 用户信息 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 用户账号 */
    account: string;
    /** 昵称 */
    nickName: string;
    /** 姓名 */
    name: string;
    /** 性别 */
    sex: number;
    /** 联系电话 */
    phone: string;
    /** 电子邮箱 */
    email: string;
    /** 自我介绍 */
    selfIntroduction: string;
    /** 头像 */
    avatar: string;
    /** 角色Id集合 */
    roleIds: string[];
    /** 角色名称 */
    roleName: string;
    /** 机构Id */
    orgId: string;
    /** 机构名称 */
    orgName: string;
    /** 密码错误次数 */
    errorNum: number;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 用户信息返回结果 */
  export interface InfoResult {
    /** 用户Id */
    userId: string;
    /** 昵称 */
    nickName: string;
    /** 联系电话 */
    phone: string;
    /** 头像 */
    avatar: string;
    /** 组织机构 */
    org: string;
    /** 角色列表 */
    roles: Array<string>;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
  /** 用户编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 用户账号 */
    account: string;
    /** 昵称 */
    nickName: string;
    /** 姓名 */
    name: string;
    /** 性别 */
    sex: number;
    /** 联系电话 */
    phone: string;
    /** 电子邮箱 */
    email: string;
    /** 自我介绍 */
    selfIntroduction: string;
    /** 头像 */
    avatar: string;
    /** 角色Id集合 */
    roleIds: string[];
    /** 机构Id */
    orgId: string;
  }
  /** 用户查询请求 */
  export interface PageParams extends ReqPage {
    /** 昵称 */
    nickName: string;
    /** 用户性别 */
    sex: number;
    /** 所属机构 */
    oegId: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统模版模块 */
export namespace SysTemplate {
  /** 系统模板返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 模板名称 */
    name: string;
    /** 模板编码 */
    code: string;
    /** 附件Id */
    fileId: string;
    /** 附件名称 */
    fileName: string;
    /** 附件大小 */
    fileSize: number;
    /** 附件路径 */
    filePath: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 系统模板编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 模板名称 */
    name: string;
    /** 模板编码 */
    code: string;
    /** 附件Id */
    fileId: string;
    /** 附件名称 */
    fileName: string;
    /** 附件大小 */
    fileSize: number;
  }
  /** 系统模板查询请求 */
  export interface PageParams extends ReqPage {
    /** 模板名称 */
    name: string;
    /** 模板编码 */
    code: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统字典模块 */
export namespace SysDict {
  /** 字典返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 分类Id */
    typeId: string;
    /** 字典类型 */
    dictType: number;
    /** 分类名称 */
    name: string;
    /** 分类编码 */
    code: string;
    /** 字典标识 */
    label: string;
    /** 字典值 */
    value: string;
    /** 备注说明 */
    remarks: string;
    /** 权重(排序) */
    sort: number;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 字典分类返回结果 */
  export interface TypeResult {
    /** 主键 */
    id: string;
    /** 分类名称 */
    name: string;
    /** 分类编码 */
    code: string;
  }
  /** 字典编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 分类Id */
    typeId: string;
    /** 字典类型 */
    dictType: number;
    /** 字典名称 */
    name: string;
    /** 字典编码 */
    code: string;
    /** 字典标识 */
    label: string;
    /** 字典值 */
    value: string;
    /** 备注说明 */
    remarks: string;
    /** 权重(排序) */
    sort: number;
  }
  /** 字典查询请求 */
  export interface PageParams extends ReqPage {
    /** 字典标识 */
    label: string;
    /** 分类Id */
    typeId: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统附件模块 */
export namespace SysFile {
  /** 附件返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 文件名称 */
    name: string;
    /** 扩展名 */
    extend: string;
    /** 文件大小(K) */
    size: number;
    /** 保存地址 */
    path: string;
    /** 预览地址 */
    url: string;
    /** 附件分类 */
    Category: number;
    /** 业务表名 */
    tableName: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 上传时间 */
    createTime: string;
    /** 上传用户 */
    createUserName: string;
  }
  /** 附件查询请求 */
  export interface PageParams extends ReqPage {
    /** 文件名称 */
    name: string;
    /** 上传用户 */
    createUserName: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统作业模块 */
export namespace SysJob {
  /** 作业返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 作业组 */
    groupName: string;
    /** 作业Id */
    jobId: string;
    /** 作业处理程序类型 */
    jobType: string;
    /** 作业类型所在程序集 */
    assemblyName: string;
    /** 描述信息 */
    description: string;
    /** 是否采用并行执行 */
    concurrent: boolean;
    /** 是否扫描 IJob 实现类 [Trigger] 特性触发器 */
    includeAnnotations: boolean;
    /** 作业信息额外数据 */
    properties: string;
    /** 创建时间 */
    createTime: string;
  }
  /** 作业查询请求 */
  export interface PageParams extends ReqPage {
    /** 作业组 */
    groupName: string;
    /** 作业Id */
    jobId: string;
  }
}

/** 系统作业触发器模块 */
export namespace SysJobTrigger {
  /** 触发器回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 作业触发器Id */
    triggerId: string;
    /** 作业Id */
    jobId: string;
    /** 作业触发器类型 */
    triggerType: string;
    /** 作业触发器类型所在程序集 */
    assemblyName: string;
    /** 作业触发器参数 */
    args: string;
    /** 描述信息 */
    description: string;
    /** 作业触发器状态 */
    status: number;
    /** 起始时间 */
    startTime?: string;
    /** 结束时间 */
    endTime?: string;
    /** 最近运行时间 */
    lastRunTime?: string;
    /** 下一次运行时间 */
    nextRunTime?: string;
    /** 触发次数 */
    numberOfRuns: number;
    /** 最大触发次数 */
    maxNumberOfRuns: number;
    /** 出错次数 */
    numberOfErrors: number;
    /** 最大出错次数 */
    maxNumberOfErrors: number;
    /** 重试次数 */
    numRetries: number;
    /** 重试间隔时间 */
    retryTimeout: number;
    /** 是否立即启动 */
    startNow: boolean;
    /** 是否启动时执行一次 */
    runOnStart: boolean;
    /** 是否在启动时重置最大触发次数等于一次的作业 */
    resetOnlyOnce: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 触发器查询请求 */
  export interface PageParams extends ReqPage {
    /** 作业Id */
    jobId: string;
  }
}

/** 系统资源模块 */
export namespace SysResource {
  /** 系统资源返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 请求方式 */
    method: string;
    /** 路由地址 */
    route: string;
    /** 控制器 */
    controller: string;
    /** 方法 */
    action: string;
    /** 完整名称 */
    fullName: number;
    /** 描述(说明) */
    description: number;
    /** 创建时间 */
    createTime: string;
  }
  /** 系统资源组返回结果 */
  export interface GroupResult {
    /** 控制器 */
    controller: string;
    /** 控制器说明 */
    description: string;
    /** 资源项 */
    children: ItemResult[];
  }
  /** 系统资源项返回结果 */
  export interface ItemResult {
    /** 请求方式 */
    method: string;
    /** 路由 */
    route: string;
    /** 路由说明 */
    description: string;
  }
  /** 系统资源查询请求 */
  export interface PageParams extends ReqPage {
    /** 请求方式 */
    method: string;
    /** 路由地址 */
    route: number;
    /** 控制器 */
    controller: number;
  }
}

/** 系统序列模块 */
export namespace SysSequence {
  /** 序列返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 序列名称 */
    name: string;
    /** 分隔符 */
    delimiter: string;
    /** 序号重置规则 */
    sequenceReset: string;
    /** 步长 */
    step: number;
    /** 当前值 */
    currentNo: number;
    /** 当前编码 */
    currentCode: string;
    /** 当前重置依赖 */
    currentReset: string;
    /** 描述(说明) */
    description: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 序列编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 序列名称 */
    name: string;
    /** 分隔符 */
    delimiter: string;
    /** 序号重置规则 */
    sequenceReset: string;
    /** 步长 */
    step: number;
    /** 描述(说明) */
    description: string;
  }
  /** 序列查询请求 */
  export interface PageParams extends ReqPage {
    /** 序列名称 */
    name: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统序列规则模块 */
export namespace SysSequenceRule {
  /** 序列规则返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 序列Id */
    sequenceId: string;
    /** 规则名称 */
    sequenceName: string;
    /** 规则排序 */
    ruleOrder: number;
    /** 规则类别 */
    ruleType: string;
    /** 规则参数 */
    ruleValue: string;
    /** 补齐方向 */
    paddingSide: string;
    /** 补齐宽度 */
    paddingWidth: number;
    /** 填充字符 */
    paddingChar: string;
    /** 描述(说明) */
    description: string;
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
    /** 创建时间 */
    createTime: string;
  }
  /** 序列规则编辑请求 */
  export interface Form {
    /** 主键 */
    id: string;
    /** 序列Id */
    sequenceId: string;
    /** 规则排序 */
    ruleOrder: number;
    /** 规则类别 */
    ruleType: string;
    /** 规则参数 */
    ruleValue: string;
    /** 补齐方向 */
    paddingSide: string;
    /** 补齐宽度 */
    paddingWidth: number;
    /** 填充字符 */
    paddingChar: string;
    /** 描述(说明) */
    description: string;
  }
  /** 序列规则查询请求 */
  export interface PageParams extends ReqPage {
    /** 是否启用(0:停止 1:启用) */
    isEnable: boolean;
  }
}

/** 系统作业日志模块 */
export namespace LogByJob {
  /** 作业日志返回结果 */
  export interface Result {
    /** 主键 */
    id: string;
    /** 作业Id */
    jobId: string;
    /** 触发器Id */
    triggerId: string;
    /** 当前运行次数 */
    numberOfRuns: number;
    /** 最近运行时间 */
    lastRunTime?: string;
    /** 下一次运行时间 */
    nextRunTime?: string;
    /** 触发器状态 */
    status: number;
    /** 本次执行结果 */
    result: string;
    /** 本次执行耗时 */
    elapsedTime: number;
    /** 创建时间 */
    createTime: string;
  }
  /** 作业日志查询请求 */
  export interface PageParams extends ReqPage {
    /** 作业Id */
    jobId: string;
  }
}
